<?php
session_start();
require_once("dbConnect.inc");
require_once("errorhandler.php");
set_error_handler("error_msg");
$NaamPattern = "/^[\s.'-\pL]+/";
$allFieldsValidated = true;

$databaseConnection = mysqli_connect($hostname, $username, $password, $database);

if (mysqli_connect_errno()) {
    trigger_error("Het is niet gelukt om verbinding te maken met de database.", E_USER_ERROR);
    exit();
}

// Rechter menu
$rightMenu = '<BR><INPUT TYPE=button onClick="location.href=\'index.php\'" value=\'Home\'></BR>';
isset($_POST["naam"]) ? $naam = $_POST["naam"] : $naam = "";
isset($_POST["email"]) ? $email = $_POST["email"] : $email = "";
$naamBericht = "";
$emailBericht = "";

if (isset($_POST["submit"])) {
    // Controleer naam
    if (isset($_POST["naam"]) AND strlen($_POST["naam"]) > 0 ) {
    $_SESSION["naam"] = $_POST["naam"];
    if (!preg_match($NaamPattern, $_POST["naam"])) {
        $naamBericht = "<B>De naam bevat ongeldige karakters</B>";
        $allFieldsValidated = false;
    } else {
        $naam = strip_tags($_POST["naam"]);
    }
    } else {
        $naamBericht = "<B>Je hebt je naam niet ingevuld</B></BR>";
        $allFieldsValidated = false;
    }
    
    // Controleer email adres
    if (isset($_POST["email"]) AND strlen($_POST["email"]) > 0 ) {
        if (!validEmail($_POST["email"])) {
            $emailBericht = "<B>Je hebt een ongeldig Email adres ingevuld</B></BR>";
            $allFieldsValidated = false;
        } else {
            $email = $_POST["email"];
        }
    } else {
        $emailBericht = "<B>Je hebt het email adres niet ingevuld</B></BR>";
        $allFieldsValidated = false;
    }

    if ($allFieldsValidated) {
        $qGetEmail = "SELECT id from users where email='$email'";

        $queryResult = mysqli_query($databaseConnection, $qGetEmail);

        if (!$queryResult) {
            trigger_error("Het is niet om de gegevens op te slaan in de database.", E_USER_ERROR);
            exit();
        }
        
        if (mysqli_num_rows($queryResult) == 0) {
            // email adres bestaat nog niet
            $password = generatePassword();
            $passwordMD5 = md5($password);
            $qSaveUser = "INSERT INTO users (naam, email, wachtwoord, admin) VALUES "
                . "('$naam', '$email', '$passwordMD5', 0)";

            $queryResult = mysqli_query($databaseConnection, $qSaveUser);

            if (!$queryResult) {
                trigger_error("Het is niet om de gegevens op te slaan in de database.", E_USER_ERROR);
                exit();
            }

            $subject = "Bedankt voor je aanmelding bij BLOXYO";
            $message = <<<MSG
                Bedankt voor je aanmelding bij BLOXYO.

                We hebben de volgende gegevens geregistreerd:
                Naam:           $naam
                Email:          $email
                Wachtwoord:     $password

                Vriendelijke groet,
                De BLOXYO beheerder
MSG;
    
            mail( $email, $subject, $message );
            header("Location: index.php");
        } else {
            $naamBericht = "Dit email adres is al geregistreerd.</BR>Gebruik een ander email adres.";
            $body = generateForm($naamBericht, $emailBericht, $naam, $email);
        }
        
    } else {
        $body = generateForm($naamBericht, $emailBericht, $naam, $email);
    }
} else {
    $body = generateForm($naamBericht, $emailBericht, $naam, $email);
}

function generateForm($naamBericht, $emailBericht, $naam, $email) {
    $body = "</BR>$naamBericht";
    $body .= "$emailBericht";
    $body .= "</BR><label for='naam'>Naam</label></BR>\n";
    $body .= "<INPUT TYPE='text' name='naam' id='t1' value='$naam' /></BR>\n";
    $body .= "</BR><label for='email'>Email</label></BR>\n";
    $body .= "<INPUT TYPE='text' name='email' id='t2' value='$email' /></BR></BR>\n";
    $body .= "Je krijgt een email toegestuurd met daarin het wachtwoord.</BR></BR>\n";
    $body .= "<INPUT TYPE='submit' name='submit' value='Verstuur'/>&nbsp&nbsp&nbsp";
    $body .= '<INPUT TYPE=button onClick="location.href=\'index.php\'" value="Cancel"/></BR>';
    return $body;
}

function validEmail($email) {
    $regex = '/^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/';
  if (preg_match($regex, $email)) {
    return true;
  } else {
    return false;
  }
}

function generatePassword($length = 8) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $password = substr(str_shuffle($chars), 0, $length);
    return $password;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/
    TR/html4/strict.dtd">
<HTML>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
        <title>Inzendopdracht 051R7</title>
    </HEAD>
    <BODY>
        <FORM ACTION="<?php echo $_SERVER["PHP_SELF"]; ?>" METHOD="POST">
            <DIV id="container">
                <DIV id="header">
                    <h1>Aanmeld formulier 051R7</h1>
                </DIV>
                <DIV id="leftBar">
                    </BR>
                </DIV>
                <DIV id="content">
                    <?php print($body); ?>
                </DIV>
                <DIV id="rightBar">
                    <?php echo $rightMenu; ?></BR>
                </DIV>
            </DIV>
        </FORM>
    </BODY>
</HTML>